package com.ads.proplan.activity;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;

import com.ads.proplan.R;
import com.googlecode.androidannotations.annotations.EActivity;
import com.googlecode.androidannotations.annotations.ViewById;

@EActivity(R.layout.activity_duvida)
public class DuvidaArcada extends Activity {

	@ViewById(R.id.duvida_arcada)
	ImageView arcadaImageView;
	
	ArrayList<String> arcada = new ArrayList<String>();
	
	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		montarArcada();
	}
	
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		onTouchArcada();
		
	}
	
	public void montarArcada() {
		int teste = 1;
		try {

			Bitmap bmp = decodeStream("gengiva.png");
			Bitmap bitmap = Bitmap.createBitmap(bmp.getWidth(),	bmp.getHeight(), Config.ARGB_8888);
			bitmap.setDensity(Bitmap.DENSITY_NONE);
			Paint p = new Paint();
			p.setAntiAlias(true);
			p.setDither(true);
			Options options = new BitmapFactory.Options();
			options.inScaled = false;
			Canvas c = new Canvas(bitmap);
			c.drawBitmap(bmp, 0f, 0f, p);
			
			String [] dentes = {"d11.png","d12.png","d13.png","d14.png","d15.png","d16.png","d17.png","d18.png",
					"d21.png","d22.png","d23.png","d24.png","d25.png","d26.png","d27.png","d28.png",
					"d31.png","d32.png","d33.png","d34.png","d35.png","d36.png","d37.png","d38.png",
					"d41.png","d42.png","d43.png","d44.png","d45.png","d46.png","d47.png","d48.png"};
			
			String [] colocar = {"11","12","13","14","15","16","17","18",
								"21","22","23","24","25","26","27","28",
								"31","32","33","34","35","36","37","38",
								"41","42","43","44","45","46","47","48"};
			
			for (int i = 0; i < dentes.length; i++) {
				Log.d("TESTE", "Numero do dente: "+(teste++));	
				if(colocarDente(colocar, i,arcada)){
					bmp = decodeStream(dentes[i]);
					c.drawBitmap(bmp, 0f, 0f, p);
					bmp.recycle();
				}
			}

			arcadaImageView.setImageBitmap(bitmap);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		}
	}
	
    private Bitmap decodeStream(String imagem) {  
        InputStream ins = null;  
        Bitmap originalBitmap= null;
         try {
			ins = getAssets().open(imagem);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
         
         originalBitmap = BitmapFactory.decodeStream(ins);  
     
        return originalBitmap;
       }  
    
	private boolean colocarDente(String[] colocar, int d, ArrayList<String> arcada) {
		for (int i = 0; i < arcada.size(); i++) {
			if (arcada.get(i).equalsIgnoreCase(colocar[d])) {
				return false;
			}
		}
		return true;
	}

	private void onTouchArcada() {
		arcadaImageView.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				if (event.getAction() == MotionEvent.ACTION_UP) {
					int[] viewCoords = new int[2];
					arcadaImageView.getLocationOnScreen(viewCoords);
					int touchX = (int) event.getX();
					int touchY = (int) event.getY();

//					int imageX = touchX - viewCoords[0];
//					int imageY = touchY - viewCoords[1];
					
					int imagePX = (touchX * 100)/arcadaImageView.getWidth();
					int imagePY = (touchY * 100)/arcadaImageView.getHeight();
					
					Log.i("", "Coordenada %: X" + imagePX + "%, Y" + imagePY+"%");
					Toast.makeText(getApplicationContext(),("Coordenada: X" + touchX + ", Y" + touchY+" - Tamanho da Imagem: X"+arcadaImageView.getWidth()+", Y"+arcadaImageView.getHeight()+" - Coordenada %: X" + imagePX + "%, Y" + imagePY+"%"), Toast.LENGTH_SHORT).show();
					relacionarDente(imagePX, imagePY);
					
					montarArcada();
				}
				return true;
			}
		});
	}
	
	private void relacionarDente(int dPX, int dPY){
		// Dente 11
		if ((dPX >= 43 && dPX <= 47) && (dPY >= 5 && dPY <= 9)) {
			if (procurarDente(arcada, "11")) {
				arcada.remove("11");
			} else {
				arcada.add("11");
			}
			return;
		}
		// Dente 12
		if ((dPX >= 35 && dPX <= 39) && (dPY >= 7 && dPY <= 11)) {
			if (procurarDente(arcada, "12")) {
				arcada.remove("12");
			} else {
				arcada.add("12");
			}
			return;
		}
		// Dente 13
		if ((dPX >= 28 && dPX <= 32) && (dPY >= 11 && dPY <= 15)) {
			if (procurarDente(arcada, "13")) {
				arcada.remove("13");
			} else {
				arcada.add("13");
			}
			return;
		}
		// Dente 14
		if ((dPX >= 23 && dPX <= 27) && (dPY >= 15 && dPY <= 19)) {
			if (procurarDente(arcada, "14")) {
				arcada.remove("14");
			} else {
				arcada.add("14");
			}
			return;
		}
		// Dente 15
		if ((dPX >= 18 && dPX <= 22) && (dPY >= 19 && dPY <= 23)) {
			if (procurarDente(arcada, "15")) {
				arcada.remove("15");
			} else {
				arcada.add("15");
			}
			return;
		}
		// Dente 16
		if ((dPX >= 14 && dPX <= 18) && (dPY >= 25 && dPY <= 29)) {
			if (procurarDente(arcada, "16")) {
				arcada.remove("16");
			} else {
				arcada.add("16");
			}
			return;
		}
		// Dente 17
		if ((dPX >= 10 && dPX <= 14) && (dPY >= 32 && dPY <= 36)) {
			if (procurarDente(arcada, "17")) {
				arcada.remove("17");
			} else {
				arcada.add("17");
			}
			return;
		}

		// Dente 18
		if ((dPX >= 9 && dPX <= 13) && (dPY >= 39 && dPY <= 43)) {
			if (procurarDente(arcada, "18")) {
				arcada.remove("18");
			} else {
				arcada.add("18");
			}
			return;
		}

		
		// Dente 21
		if ((dPX >= 53 && dPX <= 57) && (dPY >= 6 && dPY <= 10)) {
			if (procurarDente(arcada, "21")) {
				arcada.remove("21");
			} else {
				arcada.add("21");
			}
			return;
		}
		// Dente 22
		if ((dPX >= 62 && dPX <= 66) && (dPY >= 8 && dPY <= 12)) {
			if (procurarDente(arcada, "22")) {
				arcada.remove("22");
			} else {
				arcada.add("22");
			}
			return;
		}
		// Dente 23
		if ((dPX >= 68 && dPX <= 72) && (dPY >= 12 && dPY <= 16)) {
			if (procurarDente(arcada, "23")) {
				arcada.remove("23");
			} else {
				arcada.add("23");
			}
			return;
		}
		// Dente 24
		if ((dPX >= 73 && dPX <= 77) && (dPY >= 16 && dPY <= 20)) {
			if (procurarDente(arcada, "24")) {
				arcada.remove("24");
			} else {
				arcada.add("24");
			}
			return;
		}
		// Dente 25
		if ((dPX >= 78 && dPX <= 82) && (dPY >= 20 && dPY <= 24)) {
			if (procurarDente(arcada, "25")) {
				arcada.remove("25");
			} else {
				arcada.add("25");
			}
			return;
		}
		// Dente 26
		if ((dPX >= 82 && dPX <= 86) && (dPY >= 26 && dPY <= 30)) {
			if (procurarDente(arcada, "26")) {
				arcada.remove("26");
			} else {
				arcada.add("26");
			}
			return;
		}
		// Dente 27
		if ((dPX >= 85 && dPX <= 89) && (dPY >= 32 && dPY <= 36)) {
			if (procurarDente(arcada, "27")) {
				arcada.remove("27");
			} else {
				arcada.add("27");
			}
			return;
		}
		// Dente 28
		if ((dPX >= 87 && dPX <= 91) && (dPY >= 40 && dPY <= 44)) {
			if (procurarDente(arcada, "28")) {
				arcada.remove("28");
			} else {
				arcada.add("28");
			}
			return;
		}
		
		// Dente 31
		if ((dPX >= 52 && dPX <= 55) && (dPY >= 90 && dPY <= 94)) {
			if (procurarDente(arcada, "31")) {
				arcada.remove("31");
			} else {
				arcada.add("31");
			}
			return;
		}
		// Dente 32
		if ((dPX >= 58 && dPX <= 62) && (dPY >= 89 && dPY <= 93)) {
			if (procurarDente(arcada, "32")) {
				arcada.remove("32");
			} else {
				arcada.add("32");
			}
			return;
		}
		// Dente 33
		if ((dPX >= 64 && dPX <= 68) && (dPY >= 87 && dPY <= 91)) {
			if (procurarDente(arcada, "33")) {
				arcada.remove("33");
			} else {
				arcada.add("33");
			}
			return;
		}
		// Dente 34
		if ((dPX >= 69 && dPX <= 73) && (dPY >= 83 && dPY <= 87)) {
			if (procurarDente(arcada, "34")) {
				arcada.remove("34");
			} else {
				arcada.add("34");
			}
			return;
		}
		// Dente 35
		if ((dPX >= 74 && dPX <= 78) && (dPY >= 79 && dPY <= 83)) {
			if (procurarDente(arcada, "35")) {
				arcada.remove("35");
			} else {
				arcada.add("35");
			}
			return;
		}
		// Dente 36
		if ((dPX >= 77 && dPX <= 81) && (dPY >= 72 && dPY <= 76)) {
			if (procurarDente(arcada, "36")) {
				arcada.remove("36");
			} else {
				arcada.add("36");
			}
			return;
		}
		// Dente 37
		if ((dPX >= 81 && dPX <= 85) && (dPY >= 64 && dPY <= 68)) {
			if (procurarDente(arcada, "37")) {
				arcada.remove("37");
			} else {
				arcada.add("37");
			}
			return;
		}
		// Dente 38
		if ((dPX >= 84 && dPX <= 88) && (dPY >= 57 && dPY <= 61)) {
			if (procurarDente(arcada, "38")) {
				arcada.remove("38");
			} else {
				arcada.add("38");
			}
			return;
		}
	}
	
	public boolean procurarDente(ArrayList<String> arcada, String dente){
		for (int i = 0; i < arcada.size(); i++) {
			if (arcada.get(i).equalsIgnoreCase(dente)) {
				return true;
			}
		}
		return false;
	}
}
